package com.core.common;

import java.math.BigDecimal;

/**
 * 工具类
 */
public class NvlKit {

    /**
     * 转换为Integer
     *
     * @param v
     * @return
     */
    public static Integer toInteger(Object v) {
        return toInteger(v, null);
    }

    /**
     * 转换为Integer
     *
     * @param v
     * @param defaultValue
     * @return
     */
    public static Integer toInteger(Object v, Integer defaultValue) {
        if (v == null) {
            return defaultValue;
        }
        if (v instanceof Integer) {
            return (Integer) v;
        } else if (v instanceof Number) {
            return ((Number) v).intValue();
        } else {
            try {
                String s = v.toString().trim();
                if (s.length() == 0) {
                    return defaultValue;
                }
                return Double.valueOf(s).intValue();
            } catch (Exception ex) {
                return defaultValue;
            }
        }
    }

    /**
     * 转换为Long
     *
     * @param v
     * @return
     */
    public static Long toLong(Object v) {
        return toLong(v, null);
    }

    /**
     * 转换为Long
     *
     * @param v
     * @param defaultValue
     * @return
     */
    public static Long toLong(Object v, Long defaultValue) {
        if (v == null) {
            return defaultValue;
        }
        if (v instanceof Long) {
            return (Long) v;
        } else if (v instanceof Number) {
            return ((Number) v).longValue();
        } else {
            try {
                String s = v.toString().trim();
                if (s.length() == 0) {
                    return defaultValue;
                }
                return Double.valueOf(s).longValue();
            } catch (Exception ex) {
                return defaultValue;
            }
        }

    }

    /**
     * 转换为BigDecimal
     *
     * @param v
     * @return
     */
    public static BigDecimal toBigDecimal(Object v) {
        return toBigDecimal(v, null);
    }

    /**
     * 转换为BigDecimal
     *
     * @param v
     * @param defaultValue
     * @return
     */
    public static BigDecimal toBigDecimal(Object v, BigDecimal defaultValue) {
        if (v == null) {
            return defaultValue;
        }
        if (v instanceof BigDecimal) {
            return (BigDecimal) v;
        } else if (v instanceof Number) {
            return BigDecimal.valueOf(((Number) v).doubleValue());
        } else {
            try {
                String s = v.toString().trim();
                if (s.length() == 0) {
                    return defaultValue;
                }
                return BigDecimal.valueOf(Double.valueOf(s));
            } catch (Exception ex) {
                return defaultValue;
            }
        }
    }

    /**
     * 转换为转换为String
     *
     * @param v
     * @return
     */
    public static String toString(Object v) {
        return toString(v, null);
    }

    /**
     * 转换为String
     *
     * @param v
     * @param defaultValue
     * @return
     */
    public static String toString(Object v, String defaultValue) {
        if (v == null) {
            return defaultValue;
        }
        if (v instanceof String) {
            return (String) v;
        } else {
            try {
                return v.toString();
            } catch (Exception ex) {
                return defaultValue;
            }
        }
    }

}
